CRAN Status Lifecycle: experimental PRs Welcome

Overview

Description

English

The Euronext R Package is a powerful tool for accessing and retrieving financial information from the Euronext stock exchange. Whether you are interested in stocks, indexes, funds, ETFs, or bonds, this package provides a convenient interface to gather essential data for analysis and decision-making in the financial domain. With user-friendly functionalities, it simplifies the process of collecting historical data on share prices, trading volumes, and other financial indicators. Researchers, investors, and other users can extract valuable insights and make informed decisions based on the comprehensive information available. In essence, the ‘Euronext’ library is a valuable asset for those seeking a deeper understanding of Euronext and the financial markets in Europe.

Français

Le package R Euronext est un outil puissant pour accéder et récupérer des informations financières de la bourse Euronext. Que vous soyez intéressé par les actions, les indices, les fonds, les ETF ou les obligations, ce package offre une interface pratique pour collecter des données essentielles pour l’analyse et la prise de décision dans le domaine financier. Avec des fonctionnalités conviviales, il simplifie le processus de collecte de données historiques sur les prix des actions, les volumes de transactions et d’autres indicateurs financiers. Les chercheurs, les investisseurs et d’autres utilisateurs peuvent extraire des informations précieuses et prendre des décisions éclairées en se basant sur les informations complètes disponibles. En somme, la bibliothèque ‘Euronext’ est un atout précieux pour ceux qui cherchent à approfondir leur compréhension d’Euronext et des marchés financiers en Europe.

Installation

Installation guidelines

You can install the development version of EURONEXT from github with:

# github dev version
## We can use devtools
# Install the development version from GitHub
devtools::install_github("Fredysessie/Euronext")

# Or use remotes
# install.packages("remotes")

remotes::install_github("Fredysessie/Euronext")

EN_Stocks_List()

This function receives as input stock_choice and then retrieves a list of companies listed on the provided Euronext stock exchanges, filtered by the initial letter of their names. It provides information such as the company name, ticker symbol, ISIN code, market, last closing price, percentage change, and a link to the company’s details on the Euronext website. - stock_choice A character string specifying the stock exchange. Options include “A” or “Amsterdam,” “B” or “Brussels,” “D” or “Dublin”, “L” or “Lisbon,” “M” or “Milan,” “P” or “Paris,” and “O” or “Oslo.”

Example 1.a : Get Euronext Stocks List

# library(Euronext)
# library(httr)
# library(httr2)
# library(rvest)
# library(jsonlite)
# library(stringr)

# The columns names of the initial dataframe is c("Date", "Name", "Ticker", "Code_ISIN", "Market", "Last_price", "Percentage change (in %)", "URL", "Ticker_adn")

# So I will only display columns "Name", "Ticker", "Code_ISIN", "Market", "Last_price" and "Percentage change (in %)"


a_result_df <- EN_Stocks_List("A")  # For Amsterdam Stock
head(a_result_df)[,c(2:6)]
#>                 Name Ticker    Code_ISIN     Market Last_price
#> 1        AALBERTS NV   AALB NL0000852564       XAMS     €35.77
#> 2 ABN AMRO BANK N.V.    ABN NL0011540547       XAMS     €13.23
#> 3             ACCSYS    AXS GB00BQQFX454       XAMS      €0.68
#> 4              ACOMO  ACOMO NL0000313286       XAMS     €17.42
#> 5               ADUX   ADUX FR0012821890 XPAR, XAMS      €1.20
#> 6              ADYEN  ADYEN NL0012969182       XAMS         €1


b_result_df <- EN_Stocks_List("B")[,c(2:6)]  # For Brussels Stock
tail(b_result_df)
#>                   Name Ticker    Code_ISIN     Market Last_price
#> 138                WDP    WDP BE0974349814 XBRU, XAMS     €26.08
#> 139 WERELDHAVE BELGIUM   WEHB BE0003724383       XBRU     €47.30
#> 140               WHAT  WHATS BE0003573814       XBRU     €60.20
#> 141   WHITESTONE GROUP   ROCK BE0974401334       ALXB     €10.40
#> 142               XIOR   XIOR BE0974288202       XBRU     €26.95
#> 143 ZENOBE GRAMME CERT    ZEN BE0003809267       XBRU    €180.00

p_result_df <- EN_Stocks_List("P")[,c(2:6)]  # For Paris Stock
head(p_result_df)
#>            Name Ticker    Code_ISIN Market Last_price
#> 1    1000MERCIS  ALMIL FR0010285965   ALXP     €24.80
#> 2         2CRSI  AL2SI FR0013341781   ALXP      €4.61
#> 3 A.S.T. GROUPE  ALAST FR0000076887   ALXP     €1.005
#> 4    AB SCIENCE     AB FR0010557264   XPAR      €3.07
#> 5 ABC ARBITRAGE   ABCA FR0004040608   XPAR      €4.05
#> 6          ABEO   ABEO FR0013185857   XPAR     €14.60

l_result_df <- EN_Stocks_List("L")[,c(2:6)]  # For Lisbon Stock
head(l_result_df)
#>               Name Ticker    Code_ISIN Market Last_price
#> 1   AGUAS DA CURIA    CUR PTCUR0AP0000   ENXL      €1.17
#> 2       ALTRI SGPS   ALTR PTALT0AE0002   XLIS     €4.456
#> 3 ATRIUM BIRE SIGI  MLATR PTTBI0AM0006   ENXL       NANA
#> 4  B.COM.PORTUGUES    BCP PTBCP0AM0015   XLIS    €0.2587
#> 5          BENFICA  SLBEN PTSLB0AM0010   XLIS      €2.92
#> 6      COFINA,SGPS    CFN PTCFN0AE0003   XLIS     €0.394

m_result_df <- EN_Stocks_List("M")[,c(2:6)]  # For Milan Stock
head(m_result_df)
#>              Name Ticker    Code_ISIN Market Last_price
#> 1 3D SYSTEMS CORP   4DDD US88554D2053   ETLX     €4.728
#> 2 3D SYSTEMS CORP   1DDD US88554D2053   BGEM      €4.65
#> 3 3D SYSTEMS CORP   2DDD US88554D2053   MTAH     €4.542
#> 4              3M   4MMM US88579Y1010   ETLX     €87.00
#> 5              3M   1MMM US88579Y1010   BGEM     €88.06
#> 6              3M   2MMM US88579Y1010   MTAH     €88.04

d_result_df <- EN_Stocks_List("D")[,c(2:6)]  # For Dublin Stock
head(d_result_df)
#>                 Name Ticker    Code_ISIN Market Last_price
#> 1      AIB GROUP PLC    A5G IE00BF0L3536   XMSM     €3.988
#> 2             AQUILA   AERI GB00BK6RLF66   XESM    €0.7938
#> 3 BANK OF IRELAND GP   BIRG IE00BD1RP616   XMSM     €8.072
#> 4    CAIRN HOMES PLC    C5H IE00BWY4ZF18   XMSM     €1.416
#> 5  CORRE ENERGY B.V.  CORRE NL0015000DY3   XESM      €1.30
#> 6 CRH PLC 5PCCumPref   DD8A IE0001827264   XMSM      €1.00

o_result_df <- EN_Stocks_List("O")[,c(2:6)]  # For Oslo Stock
head(o_result_df, 10)
#>                  Name Ticker    Code_ISIN Market Last_price
#> 1        2020 BULKERS   2020 BMG9156K1018   XOSL   NA139.50
#> 2    5TH PLANET GAMES    5PG DK0060945467   XOAS    NA1.828
#> 3     AASEN SPAREBANK   AASB NO0010672181   MERK   NA128.00
#> 4  ABG SUNDAL COLLIER    ABG NO0003021909   XOSL     NA6.22
#> 5           ABL GROUP    ABL NO0010715394   XOSL    NA12.50
#> 6            ADEVINTA    ADE NO0010844038   XOSL   NA112.60
#> 7   ADS MARITIME HOLD    ADS CY0108052115   MERK     NA2.14
#> 8                AEGA   AEGA NO0012958539   XOAS   NA2.3105
#> 9          AF GRUPPEN    AFG NO0003078107   XOSL   NA117.00
#> 10             AGILYX   AGLX NO0010872468   XOSL    NA25.50

Example 1.b : Show in detail Paris Euronext Stocks

Example 1.c: Euronext Paris ticker ISIN

# Retrieve the ISIN for a company with ticker "abca"
EN_P_Ticker_adn("abca")
#> [1] "FR0004040608-XPAR"

# Example result for a valid ticker "AAA"
result <- EN_P_Ticker_adn("AAA")
print(result)
#> [1] "FR0000062465-XPAR"

# Example for a non-existing ticker "afsf"
print(EN_P_Ticker_adn("afsf"))  # Ticker is not existing
#> [1] "Ticker not found"

EN_Indices_List() function

It receives no argument and retrieves information about all indices available on Euronext.

Example 2 : Get the list of Euronext Indexes

all_indices = EN_Indices_List()
head(all_indices)
#> # A tibble: 6 × 8
#>   Name     Isin  Symbol Last  Percentage change (i…¹ Date_Time `YTD%` Ticker_adn
#>   <chr>    <chr> <chr>  <chr> <chr>                  <chr>     <chr>  <chr>     
#> 1 AEX All… NL00… AAX    €112… +0.24%                 05 Feb 2… +5.08% NL0000249…
#> 2 AEX All… QS00… AAXG   €439… +0.29%                 05 Feb 2… +5.14% QS0011224…
#> 3 AEX All… NL00… AEXAT  €989… +0.20%                 05 Feb 2… +4.40% NL0010614…
#> 4 AEX All… NL00… ATAWG  €328… +0.13%                 05 Feb 2… +3.16% NL0010614…
#> 5 AEX All… NL00… ATAWN  €305… +0.12%                 05 Feb 2… +3.15% NL0010614…
#> 6 AEX All… NL00… AETAW  €183… +0.11%                 05 Feb 2… +3.12% NL0010614…
#> # ℹ abbreviated name: ¹​`Percentage change (in %)`

tail(all_indices)
#> # A tibble: 6 × 8
#>   Name     Isin  Symbol Last  Percentage change (i…¹ Date_Time `YTD%` Ticker_adn
#>   <chr>    <chr> <chr>  <chr> <chr>                  <chr>     <chr>  <chr>     
#> 1 SBF Top… FR00… ESF5G  €125… -0.48%                 05 Feb 2… -0.70% FR0013371…
#> 2 SBF Top… FR00… ESF5N  €119… -0.48%                 05 Feb 2… -0.75% FR0013371…
#> 3 SBF Top… FR00… SBF80  €123… -0.37%                 05 Feb 2… -1.14% FR0013017…
#> 4 SBF Top… FR00… SBF8D  €995… -0.41%                 05 Feb 2… -1.54% FR0013017…
#> 5 SBF Top… FR00… SBF8G  €157… -0.37%                 05 Feb 2… -1.02% FR0013017…
#> 6 SBF Top… FR00… SBF8N  €147… -0.37%                 05 Feb 2… -1.05% FR0013017…
#> # ℹ abbreviated name: ¹​`Percentage change (in %)`

dim(all_indices)
#> [1] 1263    8

EN_Etfs_List() and EN_Etfs_List_bis functions

EN_Etfs_List receives as input tot_page which is the total number of pages to retrieve. In contrast, EN_Etfs_List_bis receives as input target_page which represents the target page. For example, the function EN_Etfs_List_bis(5), retrieves only the fifth page of the Etfs list, allowing more granular control of the data retrieval process (ordered list of 100 Etfs), whereas EN_Etfs_List(5) would return an ordered list of 500 Etfs listed on Euronext (on each page there are 100 Etfs, so for 5 pages 5*100 = 500).

Example 3 : Get the list of ETFs quoted on Euronext markets

# Get 1st 500 Etfs in alphabetic order
dt_ <- EN_Etfs_List()
head(dt_[, c(2:9)])
#>                 Name Ticker    Code_ISIN Market Bid Ask Last_price
#> 1 $Asia IG Corp US A   ASIG IE0007G78AC4   XAMS   -   -    $4.7937
#> 2      -1X SHORT DIS   SDIS XS2337085422   XAMS   -   -     €6.861
#> 3     -1X SHORT PLTR   SPLR XS2337086669   XAMS   -   -    €2.0178
#> 4     -1X SHORT PLUG   SPLU XS2336362079   XAMS   -   -    €3.8327
#> 5 -3X ARK INNOVATION  SARKK XS2399368906   XAMS   -   -    €0.7373
#> 6     -3x China Tech   SKWE XS2399370126   XAMS   -   -    €0.3382
#>   Percentage_change
#> 1             -1.02
#> 2             -0.13
#> 3             -3.87
#> 4              2.77
#> 5              7.90
#> 6              0.45

tail(dt_[, c(2:9)])
#>                   Name Ticker    Code_ISIN Market Bid Ask Last_price
#> 495     AMUNDI UST 10+   US10 LU1407890620   XPAR   -   -   $105.349
#> 496 AMUNDI W WATER PEA   AWAT FR0011882364   XPAR   -   -    €27.554
#> 497 AMUNDIETF CAC40(D)    C4D LU1681047079   XPAR   -   -     €75.27
#> 498      AmUSA Climate    USA IE000QQ8Z0D8   XPAR   -   -    €437.66
#> 499      AmUSA Climate   USAC IE0006IP4XZ8   XPAR   -   -   €464.337
#> 500     AMUSTRMULDETFP    CL2 FR0010755611   ETFP   -   -     €16.93
#>     Percentage_change
#> 495             -1.59
#> 496             -0.44
#> 497              0.07
#> 498              0.55
#> 499              0.09
#> 500              1.06

# The number of columns and rows
dim(dt_)
#> [1] 500  11

dt_1 <- EN_Etfs_List_bis() #By default returns the list of 100 Etfs in alphabetic order 
head(dt_1[, c(2:9)])
#>                 Name Ticker    Code_ISIN Market Bid Ask Last_price
#> 1    AMUNDI MSC WTEC   TNOW LU0533033667   XPAR   -   -    €683.71
#> 2 AMUNDI MSCI BRAZIL    RIO LU1900066207   XPAR   -   -    €21.273
#> 3 AMUNDI MSCI BRAZIL    BRZ LU1437024992   XPAR   -   -   $53.4557
#> 4  Amundi MSCI CHINA   CNEG LU2343997487   XPAR   -   -    €23.489
#> 5  AMUNDI MSCI EM DR   AEME LU1437017350   XPAR   -   -    €58.896
#> 6  AMUNDI MSCI EM DR   AEME LU1437017350   XAMS   -   -    $63.425
#>   Percentage_change
#> 1              0.89
#> 2              0.63
#> 3              0.03
#> 4              1.70
#> 5              0.64
#> 6              0.49

tail(dt_1[, c(2:9)])
#>                   Name Ticker    Code_ISIN Market Bid Ask Last_price
#> 95      AMUNDI UST 10+   US10 LU1407890620   XPAR   -   -   $105.349
#> 96  AMUNDI W WATER PEA   AWAT FR0011882364   XPAR   -   -    €27.554
#> 97  AMUNDIETF CAC40(D)    C4D LU1681047079   XPAR   -   -     €75.27
#> 98       AmUSA Climate    USA IE000QQ8Z0D8   XPAR   -   -    €437.66
#> 99       AmUSA Climate   USAC IE0006IP4XZ8   XPAR   -   -   €464.337
#> 100     AMUSTRMULDETFP    CL2 FR0010755611   ETFP   -   -     €16.93
#>     Percentage_change
#> 95              -1.59
#> 96              -0.44
#> 97               0.07
#> 98               0.55
#> 99               0.09
#> 100              1.06

# The number of columns and rows
dim(dt_1)
#> [1] 100  11

EN_Bonds_List() and EN_Bonds_List_bis functions

EN_Bonds_List receives as input tot_page which is the total number of pages to retrieve. In contrast, EN_Bonds_List_bis receives as input target_page which represents the target page. For example, the function EN_Bonds_List_bis(5), retrieves only the fifth page of the Bonds list, allowing more granular control of the data retrieval process (ordered list of 100 Bonds), whereas EN_Bonds_List(5) would return an ordered list of 500 Bonds listed on Euronext (on each page there are 100 Bonds, so for 5 pages 5*100 = 500).

Example 4 : Get the list of Bonds quoted on Euronext markets

# Get 1st 500 Bonds in alphabetic order
dt_b <- EN_Bonds_List()
head(dt_b[, c(2:9)])
#>                 Name                  Issuer    Code_ISIN Market   Maturity
#> 1 2019 PB RMBS TV EU 2019 POPOLARE BARI RMBS IT0005386724   XMOT 2069-05-31
#> 2 2019 PB RMBS TV EU 2019 POPOLARE BARI RMBS IT0005386724   XMOT 2069-05-31
#> 3 2019 PB RMBS TV EU 2019 POPOLARE BARI RMBS IT0005386724   XMOT 2069-05-31
#> 4 2I RETE GAS TF 2,1             2I RETE GAS IT0005386724   XMOT 2025-09-11
#> 5 2IRG 1.608% CALL 3             2I RETE GAS IT0005386724   ETLX 2027-10-31
#> 6 2IRG 1.75% CALL 28             2I RETE GAS IT0005386724   ETLX 2026-08-28
#>   Coupon Last_price Percentage change
#> 1   0.0%          -                 -
#> 2   0.0%          -                 -
#> 3   0.0%          -                 -
#> 4   0.0%          -                 -
#> 5   0.0%      93.65            -0.62%
#> 6   0.0%          -                 -

tail(dt_b[, c(2:9)])
#>                   Name       Issuer    Code_ISIN Market   Maturity Coupon
#> 495 ALTARE1.75%16JAN30      ALTAREA NO0011058836   XPAR 2030-01-16  1.75%
#> 496 ALTARE2.25%05JUL24      ALTAREA NO0011058836   XPAR 2024-07-05  2.25%
#> 497 ALTARE2.45%14DEC26      ALTAREA NO0011058836   XPAR 2026-12-14  2.45%
#> 498 ALTARE2.875%2JUL18     ALTAREIT NO0011058836   XPAR 2025-07-02 2.875%
#> 499 ALTAREA1.875%JAN28      ALTAREA NO0011058836   XPAR 2028-01-17 1.875%
#> 500 ALTICE FINCO 4.75% ALTICE FINCO NO0011058836   ETLX 2028-01-15   0.0%
#>     Last_price Percentage change
#> 495          -                 -
#> 496     105.75             5.75%
#> 497          -                 -
#> 498     102.09             2.85%
#> 499      80.64           -18.74%
#> 500      85.95             0.62%

# The number of columns and rows
dim(dt_b)
#> [1] 500  12

dt_b1 <- EN_Bonds_List_bis() #By default returns the list of 100 Bonds in alphabetic order 
head(dt_b1[, c(2:9)])
#>         Name              Issuer    Code_ISIN Market   Maturity Coupon
#> 1     AGFY04 Agder fylkeskommune NO0011058836   XOSL 2024-07-26 0.897%
#> 2     AGFY05 Agder fylkeskommune NO0011058836   XOSL 2024-08-23 0.954%
#> 3     AGFY06 Agder fylkeskommune NO0011058836   XOSL 2025-04-16  1.47%
#> 4     AGFY07 Agder fylkeskommune NO0011058836   XOSL 2024-11-08 1.562%
#> 5 AGFY08 ESG Agder fylkeskommune NO0011058836   XOSL 2026-02-23 2.231%
#> 6     AGFY09 Agder fylkeskommune NO0011058836   XOSL 2028-04-25 3.997%
#>   Last_price Percentage change
#> 1          -                 -
#> 2          -                 -
#> 3          -                 -
#> 4          -                 -
#> 5          -                 -
#> 6          -                 -

tail(dt_b1[, c(2:9)])
#>                   Name       Issuer    Code_ISIN Market   Maturity Coupon
#> 95  ALTARE1.75%16JAN30      ALTAREA NO0011058836   XPAR 2030-01-16  1.75%
#> 96  ALTARE2.25%05JUL24      ALTAREA NO0011058836   XPAR 2024-07-05  2.25%
#> 97  ALTARE2.45%14DEC26      ALTAREA NO0011058836   XPAR 2026-12-14  2.45%
#> 98  ALTARE2.875%2JUL18     ALTAREIT NO0011058836   XPAR 2025-07-02 2.875%
#> 99  ALTAREA1.875%JAN28      ALTAREA NO0011058836   XPAR 2028-01-17 1.875%
#> 100 ALTICE FINCO 4.75% ALTICE FINCO NO0011058836   ETLX 2028-01-15   0.0%
#>     Last_price Percentage change
#> 95           -                 -
#> 96      105.75             5.75%
#> 97           -                 -
#> 98      102.09             2.85%
#> 99       80.64           -18.74%
#> 100      85.95             0.62%

# The number of columns and rows
dim(dt_b1)
#> [1] 100  12

EN_GetISIN() function

The function takes a single parameter, ‘ticker,’ which can be the symbol, name, or ISIN of a given stock or index, and then returns its DNA.

Example 5.a : Get DNA (ISIN-Market identifier) of a given Stock or Index listed on Euronext by providing the Symbol or Name, or ISIN of a Stock or an Index.

To efficiently use the ‘Euronext’ package, it is important to understand how to handle Ticker Names, ISIN, and DNA, as many functions in the package rely on these. Note: There is a small difference between ISIN and DNA. Here’s a simple example: the ticker “4DDD” has the ISIN “US88554D2053,” and its DNA is “US88554D2053-ETLX.” As you can see, the DNA is composed of the ISIN and the market identifier “ETLX,” preceded by “-”.

Please refer to the respective functions EN_GetISIN(), EN_GetISIN_Etf(), EN_GetISIN_F(), and EN_GetISIN_B() if you wish to obtain a list of available Stocks or Indices, ETFs, Funds, and Bonds on Euronext.

# Get DNA of ticker "4DDD"
EN_GetISIN("4DDD")
#> [1] "US88554D2053-ETLX"

# Get DNA for the ticker name "ADS MARITIME HOLD"
EN_GetISIN("ADS MARITIME HOLD")
#> [1] "CY0108052115-MERK"

# Get DNA for ATENOR company by providing its ISIN
EN_GetISIN("BE0003837540")
#> [1] "BE0003837540-XBRU"

EN_GetISIN_F() function

Example 5.b : Get DNA (ISIN-Market identifier) of a given fund listed on Euronext by providing its symbol, name, or ISIN.

# Get Fund 'ACOMEA GLOBALE' DNA
aco_dna <- EN_GetISIN_F("ACOMEA GLOBALE")

# In case you want the ISI only
sub("-.*", "", aco_dna) #To get only the ISIN
#> [1] "IT0005091100"

# Get Fund 'ASNU SMALL MIDCAPF' DNA
asnu_dna <- EN_GetISIN_F("ASN5")
print(asnu_dna)
#> [1] "NL0014270217-XAMS"

# Get Fund 'COMPAM ACTIVE GLOB' DNA
EN_GetISIN_F("LU1275425897")
#> [1] "LU1275425897-ATFX"

EN_GetISIN_Etf() function

Example 5.c : Get DNA (ISIN-Market identifier) of a given ETF listed on Euronext by providing its Symbol or Name, or ISIN of a Stock or an Index.

# Get ETF 'AAPL' DNA
EN_GetISIN_Etf("AAPL")
#> [1] "XS2337099563-XAMS"

# Get ETF '-1X SHORT DIS' DNA
EN_GetISIN_Etf("-1X SHORT DIS")
#> [1] "XS2337085422-XAMS"

# Get ETF '3x Long Coinbase' DNA
EN_GetISIN_Etf("XS2399367254")
#> [1] "XS2399367254-XAMS"

EN_GetISIN_B() function

Example 5.d : Get DNA (ISIN-Market identifier) of a given Bond listed on Euronext by providing its Symbol or Name, or ISIN of a Stock or an Index.

#To get only the DNA of all same bonds issued
the_dna1 <- EN_GetISIN_B("ABN AMRO BANK N.V.")
print(the_dna1)
#> [1] "XS1344751968-XAMS"

the_isin1 <- sub("-.*", "", the_dna1) #To get only the ISINs
print(the_isin1)
#> [1] "XS1344751968"

#To get only the DNA of Bond 'A2A GREEN BOND TF'
the_dna2 = EN_GetISIN_B("A2A GREEN BOND TF")
the_isin2 =sub("-.*", "", the_dna2) #To get only the ISIN
print(the_isin2)
#> [1] "XS2403533263"

Authors :
* Koffi Frederic Sessie ()

Creator : Koffi Frederic Sessie
cph (Copyright Holder) : Koffi Frederic Sessie

License : MIT 2024, Koffi Frederic SESSIE. All rights reserved.